﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace SIAKADCORE.Models
{
    /// <summary>
    /// Kelas Mahasiswa [dbo].[mahasiswa]
    /// </summary>
    public class Mahasiswa
    {
        #region Constants
        /// <summary>
        /// Konstanta panjang id dari primary key
        /// </summary>
        public const int IdLength = 10;
        /// <summary>
        /// Konstanta prefix dari primary key
        /// </summary>
        public const string IdPrefix = "MHS";
        /// <summary>
        /// Konstanta nama tabel pada database
        /// </summary>
        public const string TableName = "[dbo].[mahasiswa]";
        /// <summary>
        /// Konstanta nama kolom idMahasiswa pada tabel
        /// </summary>
        public const string ColumnNameIdMahasiswa = "[id_mahasiswa]";
        /// <summary>
        /// Konstanta nama kolom namaMahasiswa pada tabel
        /// </summary>
        public const string ColumnNameNamaMahasiswa = "[nama_mahasiswa]";
        /// <summary>
        /// Konstanta nama kolom nrp pada tabel
        /// </summary>
        public const string ColumnNameNrp = "[NRP]"; 
        #endregion

        #region Fields
        /// <summary>
        /// [id_mahasiswa] CHAR(10) PRIMARY KEY
        /// </summary>
        private string idMahasiswa;
        /// <summary>
        /// [nama_mahasiswa] VARCHAR(50) NOT NULL
        /// </summary>
        private string namaMahasiswa;
        /// <summary>
        /// [NRP] CHAR(10) NOT NULL
        /// </summary>
        private string nrp; 
        #endregion

        #region Properties
        /// <summary>
        /// [id_mahasiswa] CHAR(10) PRIMARY KEY
        /// </summary>
        public string IdMahasiswa
        {
            get { return this.idMahasiswa; }
            set { this.idMahasiswa = value; }
        }

        /// <summary>
        /// [nama_mahasiswa] VARCHAR(50) NOT NULL
        /// </summary>
        public string NamaMahasiswa
        {
            get { return this.namaMahasiswa; }
            set { this.namaMahasiswa = value; }
        }

        /// <summary>
        /// [NRP] CHAR(10) NOT NULL
        /// </summary>
        public string Nrp
        {
            get { return this.nrp; }
            set { this.nrp = value; }
        } 
        #endregion

        #region Constructors
        /// <summary>
        /// Konstruktor
        /// </summary>
        public Mahasiswa()
        {

        }

        /// <summary>
        /// Konstruktor
        /// </summary>
        /// <param name="idMahasiswa">[id_mahasiswa] CHAR(10) PRIMARY KEY</param>
        /// <param name="namaMahasiswa">[nama_mahasiswa] VARCHAR(50) NOT NULL</param>
        /// <param name="nrp">[NRP] CHAR(10) NOT NULL</param>
        public Mahasiswa(string idMahasiswa, string namaMahasiswa, string nrp)
        {
            this.idMahasiswa = idMahasiswa;
            this.namaMahasiswa = namaMahasiswa;
            this.nrp = nrp;
        } 
        #endregion

        public override string ToString()
        {
            return string.Format("ID_MAHASISWA: {0} | NAMA_MAHASISWA: {1}", this.idMahasiswa, this.namaMahasiswa);
        }
    }
}
